package com.dty.common.result; /**
 * All rights Reserved, Designed By www.senlianshop.com
 *
 * @Package com.senlian.bs.common.base
 * @author 三帝
 * @date 2021/3/20 8:42 下午
 * @CopyRight：2020-2028 www.senlianshop.com Inc. All rights reserved.
 * 注意：本内容仅限于美美租机内部传阅，禁止外泄以及用于其它商业目的
 */

//import io.swagger.annotations.ApiModel;
//import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.io.Serializable;


//@ApiModel(description = "响应结果")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class R<T> implements Serializable {

    /**
     * 调用成功标识
     */
    //@ApiModelProperty("调用是否成功")
    @Builder.Default
    private boolean success = true;

    /**
     * 调用结果状态码
     */
    //@ApiModelProperty(value = "状态码", required = true)
    @Builder.Default
    private String code = "200";

    /**
     * 调用结果消息
     */
    //@ApiModelProperty("调用结果消息")
    @Builder.Default
    private String message = "";

    /**
     * 调用响应结果数据
     */
    //@ApiModelProperty("成功时响应数据")
    private T data;

    /**
     * 时间戳
     */
    //@ApiModelProperty(value = "时间戳", required = true, dataType = "Long")
    @Builder.Default
    private Long timestamp = System.currentTimeMillis();

    /**
     * <p> 返回成功结果，无返回结果集 </p>
     *
     * @return R<T>
     */
    public static <T> R<T> ok() {
        return ok(null);
    }

    /**
     * 成功返回（带data）
     *
     * @param data 结果数据
     * @param <T>  结果数据类型
     * @return R<T>
     */
    public static <T> R<T> ok(T data) {
        return ((R<T>) R.builder().data(data).build());
    }

    /**
     * 成功返回（带data及message）
     *
     * @param data    结果数据
     * @param message 消息
     * @param <T>     结果数据类型
     * @return R<T>
     */
    public static <T> R<T> ok(T data, String message) {
        return ((R<T>) R.builder().data(data).message(message).build());
    }


}
